Вход

Просмотр полной версии : Предпологается наличие объекта


Tera
19.04.2010, 13:58
Только начал изучать ява скрипт
при нажатие на изображение ошибка "предпологает наличие объекта " подскажите где ошибка?
<html>
<head>
<script>


function Xmove(){

var xinetrval = setInterval ("moveImg()",20);

i = 30;

function moveImg() {
alert ("sdaf");
if (i<100){
document.all.oneImg1.style.top=i;
alert(i);
i=i+5;
}
else
clearInterval(xinetrval)

} }




</script>
</head>
<body>
<IMG ID=oneImg1 src="D:/www/java/2.jpg" style="position:absolute; top:30px; left:20px; z-index=1"; onclick="Xmove()"; >


</body>
</html>

Gozar
19.04.2010, 15:04
предполагаю что здесь: document.all.oneImg1.style.top=i;
замените на:document.getElementById('oneImg1').style.top= i;

Gozar
19.04.2010, 15:06
и еще <IMG ID=oneImg1 src="D:/www/java/2.jpg" style="position:absolute; top:30px; left:20px; z-index=1"; onclick="Xmove()"; >
писать нельзя, вы ставите точку с запятой где их быть не должно и еще после z-index должно стоять двоеточие, а не равно и id лучше писать в двойных кавычках: <IMG ID="oneImg1" src="D:/www/java/2.jpg" style="position:absolute; top:30px; left:20px; z-index:1" onclick="Xmove()">

Tera
19.04.2010, 15:47
сделал все выше указаные изменения, ошибка осталасась прежней :(

Skipp
19.04.2010, 17:16
<html>
<head>
<script type="text/javascript">
function Xmove()
{
var i = 30;
var xinetrval = setInterval(function(){ i<100 ? document.all.oneImg1.style.top=i=i+5 : clearInterval(xinetrval) },20);
}

</script>
</head>
<body>
<IMG id="oneImg1" src="D:/www/java/2.jpg" style="position:absolute; top:30px; left:20px; z-index:1" onclick="Xmove()">
</body>
</html>

Tera
19.04.2010, 17:38
спасибо большое

Gozar
20.04.2010, 10:23
Skipp,
используете сокращенную запись ?: и тут же пишите вот это:
document.all.oneImg1.style.top=i=i+5
Это говнокод.
Хотя это все равно останется говнокодом, но вы его делаете еще и сложным для понимания.

Skipp
20.04.2010, 10:59
Gozar,
Объясните почему это говнокод, спорить не буду просто интересно! Может что нового узнаю.

А насчёт сложного, не спорю. Но если бы автор хотел понять, то попросил бы разжевать код.

Gozar
20.04.2010, 11:10
1. document.all говнокод
2. = i = i + 5 говнокод
3. и вообще это все говнокод потому что:

http://javascript.ru/blog/Andrej-Paranichev/Osnovy-programmnoj-animacii-JavaScript#timeout-interval

Skipp
20.04.2010, 11:20
Насчёт первого соглашусь, знаю ответ.

А вот остальное объясните пожалуйста, очень интересно, что там такого не так? Без шуток.

Gozar
20.04.2010, 11:33
Skipp,
я уже объяснил, разжёвывать я не буду, скучно.

Skipp
20.04.2010, 11:36
Gozar,
ну тогда насчёт 2 и 3 я останусь при своём мнении.
А вообще жаль, думал узнаю что-то полезное.


Может кто-нибудь другой тогда объяснит, пожалуйста.

Gozar
20.04.2010, 11:40
Skipp,
Вы разучились читать?
Я дал вам ссылку вот и читайте. Там всё разжевано.

И идите учить операторы присваивания += например.

Skipp
20.04.2010, 11:48
Gozar,
В данной ссылке, я не нашёл ничего полезного по данной теме.

А про операторы присваивания я знаю. Но не понял почему
i=i+5; - говнокод
i+=5; - а это нет

Разница в результате? Или из-за того что код сократился на 1 символ?

Gozar
20.04.2010, 11:59
Skipp,
Вставьте перед тегом <html> строку:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> и заставьте ваш код работать снова.

Skipp
20.04.2010, 12:28
Во, вот за это спасибо. ошибку понял.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function Xmove(i)
{
var xinetrval = setInterval(function(){i<100 ? document.getElementById('oneImg1').style.top=(i+=5 ) + "px" : clearInterval(xinetrval) },20);
}
</script>
</head>
<body>
<img id="oneImg1" src="http://javascript.ru/forum/image.php?u=11&dateline=1271099142" style="position:absolute; top:30px; left:20px; z-index:1" onclick="Xmove(30)" alt="">
</body>
</html>

Улучшил говнокод :)

Gozar
20.04.2010, 12:55
Skipp,
Это тоже говнокод, измените на onclick="Xmove(130)"

Skipp
20.04.2010, 13:38
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function Xmove(elem, end)
{
var xinetrval = setInterval(function(){elem.offsetTop<end ? elem.style.top=(elem.offsetTop + 5) + "px" : clearInterval(xinetrval) },20);
}
</script>
</head>
<img src="http://javascript.ru/forum/image.php?u=11&dateline=1271099142" style="position:absolute;" onclick="Xmove(this, 1000)">
</body>
</html>



апдейт комплите говнокоде =)
работает если position = absolute и если второй параметр >= 10.

Еще есть ошибки?:)